home *** CD-ROM | disk | FTP | other *** search
- ; ----------------------------------------------
- ;
- ; Program....: PLOT.S
- ; Programmør.: Kenneth Jensen
- ;
- ;
- ; Her er så vores lille plot rutine.
- ; Den er meget simple at bruge, da man bare
- ; skal tilskrive variablerne x og y med værdier
- ; og derefter kalde tegn. Se nedenstående
- ; eksempel.
- ;
- ; ----------------------------------------------
- S:
-
- Bsr Find_Skarm ; Skærm adresse findes.
-
- Move.w #607,x ; Her sættes x og y
- Move.w #250,y ; værdi, og der tegnes
- Bsr tegn ; en pixel.
-
-
- ;----------------------------------------
- ; Hovedprogram
- ;----------------------------------------
- Hoved_Program:
-
- Cmp.b #$bc,$bfe001 ; Test v. muse knap.
- Beq Slut_Program ; Hvis nedtrykt da slut.
-
- Bra Hoved_Program ; Hop til hovedprogram.
- ;---------------------------------------------------
-
-
-
- ;---------------------------------------------------
- ; Her afsluttes programmet.
- ;---------------------------------------------------
- Slut_Program:
- clr.l d0
- rts
- ;---------------------------------------------------
-
-
- ;---------------------------------------------------
- ; Her findes skærmens adresse, og den lagres i
- ; variablen <screen>.
- ;---------------------------------------------------
- Find_Skarm:
-
- Move.l 4,a6 ; Execbase
- Move.l 156(a6),a1 ; Graphics library adresse i a1
- Move.l 50(a1),a0 ; System copperlist 2
-
- Move.w 122(a0),d0 ;
- Swap d0 ; Hent skærm adresse i d0
- Move.w 126(a0),d0 ;
-
- Move.l d0,screen ; Flyt skærm adresse til a1
-
- Rts
- ;---------------------------------------------------
-
- ;----------------------------------------
- ; Tegne rutinen.
- ;----------------------------------------
- Tegn:
- Movem.l d0-d7/a0-a1,-(sp) ; Red registre.
- Clr.l d0 ;
- Clr.l d1 ;
- Clr.l d2 ; Clear registre.
- Clr.l d3 ;
- Clr.l d4 ;
- Move.l screen,d0 ; Flyt skærm adresse til D0.
- Move.w y,d1 ; Flyt y til D1.
- Mulu #80,d1 ; Gang D1 med 80.
- Add.l d1,d0 ; Adder resultat til D0.
- Clr.l d1 ; Clear D1.
- Move.w x,d1 ; Flyt x til D1.
- Divu #8,d1 ; Find antal byte (divider med 8).
- Move.w d1,d2 ; Flyt resultat til D2.
- Swap d1 ; Ombyt D1.
- Move.w d1,d3 ; Flyt rest til D3.
- Add.w d2,d0 ; Adder resultat (D2) til D0.
- Move.b #%10000000,d4 ; Tænd kun bit 7 i D4.
- Lsr.b d3,d4 ; Skub denne bit svarende til rest.
- Move.l d0,a1 ; Flyt nu D0 til A1.
- Or.b d4,(a1) ; Sæt endelig pixel på skærmen.
- Movem.l (sp)+,d0-d7/a0-a1 ; De reddede registre flyttes
- ; tilbage.
- rts
- ;------------------------------
-
- ;----------------------------------------
- ; Slette rutinen
- ;----------------------------------------
- Slet:
-
- Movem.l d0-d7/a0-a1,-(sp) ; Red registre.
- Clr.l d0
- Clr.l d1
- Clr.l d2
- Clr.l d3
- Clr.l d4
- Move.l screen,d0
- Move.w y,d1
- Mulu #80,d1
- Add.l d1,d0
- Clr.l d1
- Move.w x,d1
- Divu #8,d1
- Move.w d1,d2
- Swap d1
- Move.w d1,d3
- Add.w d2,d0
- Move.b #%01111111,d4
- Ror.b d3,d4
- Move.l d0,a1
- And.b d4,(a1)
- Movem.l (sp)+,d0-d7/a0-a1 ; De reddede registre flyttes
- ; tilbage.
-
- Rts
- ;----------------------------------------
-
- dc.w 0
- x: dc.w 0
- y: dc.w 0
- a: dc.w 0
- screen: dc.l 0
-